home *** CD-ROM | disk | FTP | other *** search
/ The CICA Windows Explosion! / The CICA Windows Explosion! - Disc 2.iso / demo / wemdemo4.zip / INFO / LEMACS.11 (.txt) < prev    next >
GNU Info File  |  1994-09-21  |  50KB  |  859 lines

  1. This is Info file ../info/lemacs, produced by Makeinfo-1.55 from the
  2. input file lemacs.txi.
  3.    This file documents the GNU Emacs editor.
  4.    Copyright (C) 1985, 1986, 1988 Richard M. Stallman.  Copyright (C)
  5. 1991, 1992 Lucid, Inc.
  6.    Permission is granted to make and distribute verbatim copies of this
  7. manual provided the copyright notice and this permission notice are
  8. preserved on all copies.
  9.    Permission is granted to copy and distribute modified versions of
  10. this manual under the conditions for verbatim copying, provided also
  11. that the sections entitled "The GNU Manifesto", "Distribution" and "GNU
  12. General Public License" are included exactly as in the original, and
  13. provided that the entire resulting derived work is distributed under the
  14. terms of a permission notice identical to this one.
  15.    Permission is granted to copy and distribute translations of this
  16. manual into another language, under the above conditions for modified
  17. versions, except that the sections entitled "The GNU Manifesto",
  18. "Distribution" and "GNU General Public License" may be included in a
  19. translation approved by the author instead of in the original English.
  20. File: lemacs,  Node: Mail Headers,  Next: Mail Mode,  Prev: Mail Format,  Up: Sending Mail
  21. Mail Header Fields
  22. ==================
  23.    There are several header fields you can use in the `*mail*' buffer.
  24. Each header field starts with a field name at the beginning of a line,
  25. terminated by a colon.  It does not matter whether you use upper or
  26. lower case in the field name.  After the colon and optional whitespace
  27. comes the contents of the field.
  28.      This field contains the mailing addresses of the message.
  29. `Subject'
  30.      The contents of the `Subject' field should be a piece of text that
  31.      says what the message is about.  Subject fields are useful because
  32.      most mail-reading programs can provide a summary of messages,
  33.      listing the subject of each message but not its text.
  34.      This field contains additional mailing addresses to send the
  35.      message to, but whose readers should not regard the message as
  36.      addressed to them.
  37. `BCC'
  38.      This field contains additional mailing addresses to send the
  39.      message to, but which should not appear in the header of the
  40.      message actually sent.
  41. `FCC'
  42.      This field contains the name of one file (in Unix mail file
  43.      format) to which a copy of the message should be appended when the
  44.      message is sent.
  45. `From'
  46.      Use the `From' field to say who you are, when the account you are
  47.      using to send the mail is not your own.  The contents of the
  48.      `From' field should be a valid mailing address, since replies will
  49.      normally go there.
  50. `Reply-To'
  51.      Use the `Reply-to' field to direct replies to a different address,
  52.      not your own. `From' and `Reply-to' have the same effect on where
  53.      replies go, but they convey a different meaning to the person who
  54.      reads the message.
  55. `In-Reply-To'
  56.      This field contains a piece of text describing a message you are
  57.      replying to.  Some mail systems can use the information to
  58.      correlate related pieces of mail.  Normally this field is filled
  59.      in by Rmail when you are replying to a message in Rmail, and you
  60.      never need to think about it (*note Rmail::.).
  61. The `To', `CC', `BCC' and `FCC' fields can appear any number of times,
  62. to specify many places to send the message.
  63. The `To', `CC', and `BCC' fields can have continuation lines.  All the
  64. lines starting with whitespace, following the line on which the field
  65. starts, are considered part of the field.  For example,
  66.      To: foo@here, this@there,
  67.        me@gnu.cambridge.mass.usa.earth.spiral3281
  68. If you have a `~/.mailrc' file, Emacs scans it for mail aliases the
  69. first time you try to send mail in an Emacs session.  Emacs expands
  70. aliases found in the `To', `CC', and `BCC' fields where appropriate.
  71. You can set the variable `mail-abbrev-mailrc-file' to the name of the
  72. file with mail aliases.  If `nil', `~/.mailrc' is used.
  73.    Your `.mailrc' file ensures that word-abbrevs are defined for each
  74. of your mail aliases when point is in a `To', `CC', `BCC', or `From'
  75. field.  The aliases are defined in your `.mailrc' file or in a file
  76. specified by the `MAILRC' environment variable if it exists.  Your mail
  77. aliases expand any time you type a word-delimiter at the end of an
  78. abbreviation.
  79.    In this version of Emacs, what you see is what you get: in contrast
  80. to some other versions, no abbreviations are expanded after you have
  81. sent the mail.  This means you don't suffer the annoyance of having the
  82. system do things behind your back -- if the system rewrites an address
  83. you typed, you know it immediately, instead of after the mail has been
  84. sent and it's too late to do anything about it.  For example, you will
  85. never again be in trouble because you forgot to delete an old alias
  86. from your `.mailrc' and a new local user is given a userid which
  87. conflicts with one of your aliases.
  88.    Your mail alias abbrevs are in effect only when point is in an
  89. appropriate header field. The mail aliases will not expand in the body
  90. of the message, or in other header fields.  The default mode-specific
  91. abbrev table `mail-mode-abbrev-table' is used instead if defined.  That
  92. means if you have been using mail-mode specific abbrevs, this code will
  93. not adversely affect you.  You can control which header fields the
  94. abbrevs are used in by changing the variable `mail-abbrev-mode-regexp'.
  95.    If auto-fill mode is on, abbrevs wrap at commas instead of at word
  96. boundaries and header continuation lines will be properly indented.
  97.    You can also insert a mail alias with
  98. `mail-interactive-insert-alias'.  This function, which is bound to `C-c
  99. C-a', prompts you for an alias (with completion) and inserts its
  100. expansion at point.
  101.    In this version of Emacs, it is possible to have lines like the
  102. following in your `.mailrc' file:
  103.           alias someone "John Doe <doe@quux.com>"
  104.    That is, if you want an address to have embedded spaces, simply
  105. surround it with double-quotes.  The quotes are necessary because the
  106. format of the `.mailrc' file uses spaces as address delimiters.
  107.    Aliases in the mailrc file may be nested. For example, assume you
  108. define aliases like:
  109.           alias group1 fred ethel
  110.           alias group2 larry curly moe
  111.           alias everybody group1 group2
  112.    When you now type `everybody' on the `To' line, it will expand to
  113.           fred, ethyl, larry, curly, moe
  114.    Aliases may contain forward references; the alias of `everybody' in
  115. the example above can preceed the aliases of `group1' and `group2'.
  116.    In this version of Emacs, you can use the `source' .mailrc command
  117. for reading aliases from some other file as well.
  118.    Aliases may contain hyphens, as in `"alias foo-bar foo@bar"' even
  119. though word-abbrevs normally cannot contain hyphens.
  120.    To read in the contents of another .mailrc-type file from Emacs, use
  121. the command `M-x merge-mail-aliases'.  The `rebuild-mail-aliases'
  122. command is similar, but deletes existing aliases first.
  123.    If you would like your aliases to be expanded when you type `M->' or
  124. `C-n' to move from the mail-header into the message body, instead of
  125. having to type SPC at the end of the abbrev before moving away, use the
  126. following code:
  127.       (setq mail-setup-hook
  128.            '(lambda ()
  129.               (define-key mail-mode-map "\C-n"
  130.                 'abbrev-hacking-next-line)
  131.               (define-key mail-mode-map "\M->"
  132.                 'abbrev-hacking-end-of-buffer)))
  133.    If you want multiple addresses seperated by a string other than ", "
  134. then you set the variable `mail-alias-seperator-string' to it.  This
  135. has to be a comma bracketed by whitespace if you want any kind of
  136. reasonable behavior.
  137.    If the variable `mail-archive-file-name' is non-`nil', it should be
  138. a string naming a file.  Each time you start to edit a message to send,
  139. an `FCC' field is entered for that file.  Unless you remove the `FCC'
  140. field, every message is written into that file when it is sent.
  141. File: lemacs,  Node: Mail Mode,  Prev: Mail Headers,  Up: Sending Mail
  142. Mail Mode
  143. =========
  144.    The major mode used in the `*mail*' buffer is Mail mode.  Mail mode
  145. is similar to Text mode, but several commands are provided on the `C-c'
  146. prefix.  These commands all deal specifically with editing or sending
  147. the message.
  148. `C-c C-s'
  149.      Send the message, and leave the `*mail*' buffer selected
  150.      (`mail-send').
  151. `C-c C-c'
  152.      Send the message, and select some other buffer
  153.      (`mail-send-and-exit').
  154. `C-c C-f C-t'
  155.      Move to the `To' header field, creating one if there is none
  156.      (`mail-to').
  157. `C-c C-f C-s'
  158.      Move to the `Subject' header field, creating one if there is none
  159.      (`mail-subject').
  160. `C-c C-f C-c'
  161.      Move to the `CC' header field, creating one if there is none
  162.      (`mail-cc').
  163. `C-c C-w'
  164.      Insert the file `~/.signature' at the end of the message text
  165.      (`mail-signature').
  166. `C-c C-y'
  167.      Yank the selected message from Rmail (`mail-yank-original').  This
  168.      command does nothing unless your command to start sending a
  169.      message was issued with Rmail.
  170. `C-c C-q'
  171.      Fill all paragraphs of yanked old messages, each individually
  172.      (`mail-fill-yanked-message').
  173. `button3'
  174.      Pops up a menu of useful mail-mode commands.
  175.    There are two ways to send a message.  `C-c C-c'
  176. (`mail-send-and-exit') is the usual way to send the message.  It sends
  177. the message and then deletes the window (if there is another window) or
  178. switches to another buffer.  It puts the `*mail*' buffer at the lowest
  179. priority for automatic reselection, since you are finished with using
  180. it.  `C-c C-s' (`mail-send') sends the message and marks the `*mail*'
  181. buffer unmodified, but leaves that buffer selected so that you can
  182. modify the message (perhaps with new recipients) and send it again.
  183.    Mail mode provides some other special commands that are useful for
  184. editing the headers and text of the message before you send it.  There
  185. are three commands defined to move point to particular header fields,
  186. all based on the prefix `C-c C-f' (`C-f' is for "field").  They are
  187. `C-c C-f C-t' (`mail-to') to move to the `To' field, `C-c C-f C-s'
  188. (`mail-subject') for the `Subject' field, and `C-c C-f C-c' (`mail-cc')
  189. for the `CC' field.  These fields have special motion commands because
  190. they are edited most frequently.
  191.    `C-c C-w' (`mail-signature') adds a standard piece of text at the
  192. end of the message to say more about who you are.  The text comes from
  193. the file `.signature' in your home directory.
  194.    When you use an Rmail command to send mail from the Rmail mail
  195. reader, you can use `C-c C-y' inside the `*mail*' buffer to insert the
  196. text of the message you are replying to.  Normally Rmail indents each
  197. line of that message four spaces and eliminates most header fields.  A
  198. numeric argument specifies the number of spaces to indent.  An argument
  199. of just `C-u' says not to indent at all and not to eliminate anything.
  200. `C-c C-y' always uses the current message from the `RMAIL' buffer, so
  201. you can insert several old messages by selecting one in `RMAIL',
  202. switching to `*mail*' and yanking it, then switching back to `RMAIL' to
  203. select another.
  204.    After using `C-c C-y', you can use the command `C-c C-q'
  205. (`mail-fill-yanked-message') to fill the paragraphs of the yanked old
  206. message or messages.  One use of `C-c C-q' fills all such paragraphs,
  207. each one separately.
  208.    Clicking the right mouse button in a mail buffer pops up a menu of
  209. the above commands, for easy access.
  210.    Turning on Mail mode (which `C-x m' does automatically) calls the
  211. value of `text-mode-hook', if it is not void or `nil', and then calls
  212. the value of `mail-mode-hook' if that is not void or `nil'.
  213. File: lemacs,  Node: Rmail,  Next: Recursive Edit,  Prev: Sending Mail,  Up: Top
  214. Reading Mail with Rmail
  215. ***********************
  216.    Rmail is an Emacs subsystem for reading and disposing of mail that
  217. you receive.  Rmail stores mail messages in files called Rmail files.
  218. You read the messages in an Rmail file in a special major mode, Rmail
  219. mode, which redefines most letters to run commands for managing mail.
  220. To enter Rmail, type `M-x rmail'.  This reads your primary mail file,
  221. merges new mail in from your inboxes, displays the first new message,
  222. and lets you begin reading.
  223.    Using Rmail in the simplest fashion, you have one Rmail file
  224. `~/RMAIL' in which all of your mail is saved.  It is called your
  225. "primary mail file".  You can also copy messages into other Rmail files
  226. and then edit those files with Rmail.
  227.    Rmail displays only one message at a time.  It is called the
  228. "current message".  Rmail mode's special commands can move to another
  229. message, delete the message, copy the message into another file, or
  230. send a reply.
  231.    Within the Rmail file, messages are arranged sequentially in order
  232. of receipt.  They are also assigned consecutive integers as their
  233. "message numbers".  The number of the current message is displayed in
  234. Rmail's mode line, followed by the total number of messages in the
  235. file.  You can move to a message by specifying its message number using
  236. the `j' key (*note Rmail Motion::.).
  237.    Following the usual conventions of Emacs, changes in an Rmail file
  238. become permanent only when the file is saved.  You can do this with `s'
  239. (`rmail-save'), which also expunges deleted messages from the file
  240. first (*note Rmail Deletion::.).  To save the file without expunging,
  241. use `C-x C-s'.  Rmail saves the Rmail file automatically when moving new
  242. mail from an inbox file (*note Rmail Inbox::.).
  243.    You can exit Rmail with `q' (`rmail-quit'); this expunges and saves
  244. the Rmail file and then switches to another buffer.  But there is no
  245. need to `exit' formally.  If you switch from Rmail to editing in other
  246. buffers, and never happen to switch back, you have exited.  Just make
  247. sure to save the Rmail file eventually (like any other file you have
  248. changed).  `C-x s' is a good enough way to do this (*note Saving::.).
  249. * Menu:
  250. * Scroll: Rmail Scrolling.   Scrolling through a message.
  251. * Motion: Rmail Motion.      Moving to another message.
  252. * Deletion: Rmail Deletion.  Deleting and expunging messages.
  253. * Inbox: Rmail Inbox.        How mail gets into the Rmail file.
  254. * Files: Rmail Files.        Using multiple Rmail files.
  255. * Output: Rmail Output.         Copying message out to files.
  256. * Labels: Rmail Labels.      Classifying messages by labeling them.
  257. * Summary: Rmail Summary.    Summaries show brief info on many messages.
  258. * Reply: Rmail Reply.        Sending replies to messages you are viewing.
  259. * Editing: Rmail Editing.    Editing message text and headers in Rmail.
  260. * Digest: Rmail Digest.      Extracting the messages from a digest message.
  261. File: lemacs,  Node: Rmail Scrolling,  Next: Rmail Motion,  Prev: Rmail,  Up: Rmail
  262. Scrolling Within a Message
  263. ==========================
  264.    When Rmail displays a message that does not fit on the screen, you
  265. have to scroll through it.  You could use `C-v', `M-v' and `M-<', but
  266. scrolling is so frequent in Rmail that it deserves to be easier to type.
  267. `SPC'
  268.      Scroll forward (`scroll-up').
  269. `DEL'
  270.      Scroll backward (`scroll-down').
  271.      Scroll to start of message (`rmail-beginning-of-message').
  272.    Since the most common thing to do while reading a message is to
  273. scroll through it by screenfuls, Rmail makes SPC and DEL synonyms of
  274. `C-v' (`scroll-up') and `M-v' (`scroll-down')
  275.    The command `.' (`rmail-beginning-of-message') scrolls back to the
  276. beginning of a selected message.  This is not quite the same as `M-<':
  277. first, it does not set the mark; secondly, it resets the buffer
  278. boundaries to the current message if you have changed them.
  279. File: lemacs,  Node: Rmail Motion,  Next: Rmail Deletion,  Prev: Rmail Scrolling,  Up: Rmail
  280. Moving Among Messages
  281. =====================
  282.    The most basic thing to do with a message is to read it.  The way to
  283. do this in Rmail is to make the message current.  You can make any
  284. message current given its message number using the `j' command, but
  285. people most often move sequentially through the file, since this is the
  286. order of receipt of messages.  When you enter Rmail, you are positioned
  287. at the first new message (new messages are those received after you last
  288. used Rmail), or at the last message if there are no new messages this
  289. time.  Move forward to see other new messages if there are any; move
  290. backward to re-examine old messages.
  291.      Move to the next non-deleted message, skipping any intervening
  292.      deleted
  293.      messages (`rmail-next-undeleted-message').
  294.      Move to the previous non-deleted message
  295.      (`rmail-previous-undeleted-message').
  296. `M-n'
  297.      Move to the next message, including deleted messages
  298.      (`rmail-next-message').
  299. `M-p'
  300.      Move to the previous message, including deleted messages
  301.      (`rmail-previous-message').
  302.      Move to the first message.  With argument N, move to message
  303.      number N (`rmail-show-message').
  304.      Move to the last message (`rmail-last-message').
  305. `M-s REGEXP RET'
  306.      Move to the next message containing a match for REGEXP
  307.      (`rmail-search').  If REGEXP is empty, the last regexp used is
  308.      used again.
  309. `- M-s REGEXP RET'
  310.      Move to the previous message containing a match for REGEXP.  If
  311.      REGEXP is empty, the last regexp used is used again.
  312.    To move among messages in Rmail, you can use `n' and `p'.  These
  313. keys move through the messages sequentially, but skip over deleted
  314. messages, which is usually what you want to do.  Their command
  315. definitions are named `rmail-next-undeleted-message' and
  316. `rmail-previous-undeleted-message'.  If you do not want to skip deleted
  317. messages--for example, if you want to move to a message to undelete
  318. it--use the variants `M-n' (`rmail-next-message' and `M-p'
  319. `rmail-previous-message').  A numeric argument to any of these commands
  320. serves as a repeat count.
  321.    In Rmail, you can specify a numeric argument by just typing the
  322. digits.  It is not necessary to type `C-u' first.
  323.    The `M-s' (`rmail-search') command is Rmail's version of search.
  324. The usual incremental search command `C-s' works in Rmail, but searches
  325. only within the current message.  The purpose of `M-s' is to search for
  326. another message.  It reads a regular expression (*note Regexps::.)
  327. non-incrementally, then searches starting at the beginning of the
  328. following message for a match.  The message containing the match is
  329. selected.
  330.    To search backward in the file for another message, give `M-s' a
  331. negative argument.  In Rmail you can do this with `- M-s'.
  332.    It is also possible to search for a message based on labels.  *Note
  333. Rmail Labels::.
  334.    To move to a message specified by absolute message number, use `j'
  335. (`rmail-show-message') with the message number as argument.  With no
  336. argument, `j' selects the first message.  `>' (`rmail-last-message')
  337. selects the last message.
  338. File: lemacs,  Node: Rmail Deletion,  Next: Rmail Inbox,  Prev: Rmail Motion,  Up: Rmail
  339. Deleting Messages
  340. =================
  341.    When you no longer need to keep a message, you can "delete" it.  This
  342. flags it as ignorable, and some Rmail commands will pretend it is no
  343. longer present; but it still has its place in the Rmail file, and still
  344. has its message number.
  345.    "Expunging" the Rmail file actually removes the deleted messages.
  346. The remaining messages are renumbered consecutively.  Expunging is the
  347. only action that changes the message number of any message, except for
  348. undigestifying (*note Rmail Digest::.).
  349.      Delete the current message, and move to the next non-deleted
  350.      message (`rmail-delete-forward').
  351. `C-d'
  352.      Delete the current message, and move to the previous non-deleted
  353.      message (`rmail-delete-backward').
  354.      Undelete the current message, or move back to a deleted message and
  355.      undelete it (`rmail-undelete-previous-message').
  356.      Expunge the Rmail file (`rmail-expunge').  These two commands are
  357.      synonyms.
  358.    There are two Rmail commands for deleting messages.  Both delete the
  359. current message and select another message.  `d'
  360. (`rmail-delete-forward') moves to the following message, skipping
  361. messages already deleted, while `C-d' (`rmail-delete-backward') moves
  362. to the previous non-deleted message.  If there is no non-deleted
  363. message to move to in the specified direction, the message that was just
  364. deleted remains current.
  365.    To make all deleted messages disappear from the Rmail file, type `e'
  366. (`rmail-expunge').  Until you do this, you can still "undelete" the
  367. deleted messages.
  368.    To undelete, type `u' (`rmail-undelete-previous-message'), which
  369. cancels the effect of a `d' command (usually).  It undeletes the
  370. current message if the current message is deleted.  Otherwise it moves
  371. backward to previous messages until a deleted message is found, and
  372. undeletes that message.
  373.    You can usually undo a `d' with a `u' because the `u' moves back to
  374. and undeletes the message that the `d' deleted.  This does not work
  375. when the `d' skips a few already-deleted messages that follow the
  376. message being deleted; in that case the `u' command undeletes the last
  377. of the messages that were skipped.  There is no clean way to avoid this
  378. problem.  However, by repeating the `u' command, you can eventually get
  379. back to the message you intended to undelete.  You can also reach that
  380. message with `M-p' commands and then type `u'.
  381.    A deleted message has the `deleted' attribute, and as a result
  382. `deleted' appears in the mode line when the current message is deleted.
  383. In fact, deleting or undeleting a message is nothing more than adding
  384. or removing this attribute.  *Note Rmail Labels::.
  385. File: lemacs,  Node: Rmail Inbox,  Next: Rmail Files,  Prev: Rmail Deletion,  Up: Rmail
  386. Rmail Files and Inboxes
  387. =======================
  388.    Unix places your incoming mail in a file called your "inbox".  When
  389. you start up Rmail, it copies the new messages from your inbox into
  390. your primary mail file, an Rmail file which also contains other messages
  391. saved from previous Rmail sessions.  In this file, you actually read
  392. the mail with Rmail.  The operation is called "getting new mail".  You
  393. can repeat it at any time using the `g' key in Rmail.  The inbox file
  394. name is `/usr/spool/mail/USERNAME' in Berkeley Unix,
  395. `/usr/mail/USERNAME' in system V.
  396.    There are two reason for having separate Rmail files and inboxes.
  397.   1. The format in which Unix delivers the mail in the inbox is not
  398.      adequate for Rmail mail storage.  It has no way to record
  399.      attributes (such as `deleted') or user-specified labels; it has no
  400.      way to record old headers and reformatted headers; it has no way
  401.      to record cached summary line information.
  402.   2. It is very cumbersome to access an inbox file without danger of
  403.      losing mail, because it is necessary to interlock with mail
  404.      delivery.  Moreover, different Unix systems use different
  405.      interlocking techniques.  The strategy of moving mail out of the
  406.      inbox once and for all into a separate Rmail file avoids the need
  407.      for interlocking in all the rest of Rmail, since only Rmail
  408.      operates on the Rmail file.
  409.    When getting new mail, Rmail first copies the new mail from the inbox
  410. file to the Rmail file and saves the Rmail file.  It then deletes the
  411. inbox file.  This way, a system crash may cause duplication of mail
  412. between the inbox and the Rmail file, but cannot lose mail.
  413.    Copying mail from an inbox in the system's mailer directory actually
  414. puts it in an intermediate file `~/.newmail'.  This is because the
  415. interlocking is done by a C program that copies to another file.
  416. `~/.newmail' is deleted after mail merging is successful.  If there is
  417. a crash at the wrong time, this file will continue to exist and will be
  418. used as an inbox the next time you get new mail.
  419. File: lemacs,  Node: Rmail Files,  Next: Rmail Output,  Prev: Rmail Inbox,  Up: Rmail
  420. Multiple Mail Files
  421. ===================
  422.    Rmail operates by default on your "primary mail file", which is named
  423. `~/RMAIL' and receives your incoming mail from your system inbox file.
  424. But you can also have other mail files and edit them with Rmail.  These
  425. files can receive mail through their own inboxes, or you can move
  426. messages into them by explicit command in Rmail (*note Rmail Output::.).
  427. `i FILE RET'
  428.      Read FILE into Emacs and run Rmail on it (`rmail-input').
  429. `M-x set-rmail-inbox-list RET FILES RET'
  430.      Specify inbox file names for current Rmail file to get mail from.
  431.      Merge new mail from current Rmail file's inboxes
  432.      (`rmail-get-new-mail').
  433. `C-u g FILE'
  434.      Merge new mail from inbox file FILE.
  435.    To run Rmail on a file other than your primary mail file, you may use
  436. the `i' (`rmail-input') command in Rmail.  This visits the file, puts
  437. it in Rmail mode, and then gets new mail from the file's inboxes if
  438. any.  You can also use `M-x rmail-input' even when not in Rmail.
  439.    The file you read with `i' does not have to be in Rmail file format.
  440. It could also be Unix mail format, or mmdf format; or it could be a
  441. mixture of all three, as long as each message has one of the three
  442. formats.  Rmail recognizes all three and converts all the messages to
  443. proper Rmail format before showing you the file.
  444.    Each Rmail file can contain a list of inbox file names; you can
  445. specify this list with `M-x set-rmail-inbox-list RET FILES RET'.  The
  446. argument can contain any number of file names, separated by commas.  It
  447. can also be empty, which specifies that this file should have no
  448. inboxes.  Once a list of inboxes is specified, the Rmail file remembers
  449. it permanently until it is explicitly changed.
  450.    If an Rmail file has inboxes, new mail is merged in from the inboxes
  451. when you bring the Rmail file into Rmail, and when you use the `g'
  452. (`rmail-get-new-mail') command.  If the Rmail file specifies no
  453. inboxes, then no new mail is merged in at these times.  A special
  454. exception is made for your primary mail file: Rmail uses the standard
  455. system inbox for it if it does not specify an inbox.
  456.    To merge mail from a file that is not the usual inbox, give the `g'
  457. key a numeric argument, as in `C-u g'.  Rmail prompts you for a file
  458. name and merges mail from the file you specify.  The inbox file is not
  459. deleted or changed in any way when you use `g' with an argument.  This
  460. is, therefore, a general way of merging one file of messages into
  461. another.
  462. File: lemacs,  Node: Rmail Output,  Next: Rmail Labels,  Prev: Rmail Files,  Up: Rmail
  463. Copying Messages Out to Files
  464. =============================
  465. `o FILE RET'
  466.      Append a copy of the current message to the file FILE, writing it
  467.      in Rmail file format (`rmail-output-to-rmail-file').
  468. `C-o FILE RET'
  469.      Append a copy of the current message to the file FILE, writing it
  470.      in Unix mail file format (`rmail-output').
  471.    If an Rmail file has no inboxes, use explicit `o' commands to write
  472. Rmail files.
  473.    `o' (`rmail-output-to-rmail-file') appends the current message in
  474. Rmail format to the end of a specified file.  This is the best command
  475. to use to move messages between Rmail files.  If you are currently
  476. visiting the other Rmail file, copying is done into the other file's
  477. Emacs buffer instead.  You should eventually save the buffer on disk.
  478.    The `C-o' (`rmail-output') command in Rmail appends a copy of the
  479. current message to a specified file, in Unix mail file format.  This is
  480. useful for moving messages into files to be read by other mail
  481. processors that do not understand Rmail format.
  482.    Copying a message with `o' or `C-o' gives the original copy of the
  483. message the `filed' attribute, `filed' appears in the mode line when
  484. such a message is current.
  485.    Normally you should use only `o' to output messages to other Rmail
  486. files, never `C-o'.  But it is also safe if you always use `C-o', never
  487. `o'.  When a file is visited in Rmail, the last message is checked, and
  488. if it is in Unix format, the entire file is scanned and all Unix-format
  489. messages are converted to Rmail format.  (The reason for checking the
  490. last message is that scanning the file is slow and most Rmail files
  491. have only Rmail format messages.)  If you use `C-o' consistently, the
  492. last message is guaranteed to be in Unix format, so Rmail will convert
  493. all messages properly.
  494.    When you and other users want to append mail to the same file, you
  495. probably always want to use `C-o' instead of `o'.  Other mail
  496. processors may not know Rmail format but will know Unix format.
  497.    In any case, always use `o' to add to an Rmail file that is being
  498. visited in Rmail.  Adding messages with `C-o' to the actual disk file
  499. will trigger a "simultaneous editing" warning when you ask to save the
  500. Emacs buffer, and the messages will be lost if you do save.
  501. File: lemacs,  Node: Rmail Labels,  Next: Rmail Summary,  Prev: Rmail Output,  Up: Rmail
  502. Labels
  503. ======
  504.    Each message can have various "labels" assigned to it as a means of
  505. classification.  A label has a name; different names mean different
  506. labels.  Any given label is either present or absent on a particular
  507. message.  A few label names have standard meanings and are given to
  508. messages automatically by Rmail when appropriate; these special labels
  509. are called "attributes".  All other labels are assigned by the user.
  510. `a LABEL RET'
  511.      Assign the label LABEL to the current message (`rmail-add-label').
  512. `k LABEL RET'
  513.      Remove the label LABEL from the current message
  514.      (`rmail-kill-label').
  515. `C-M-n LABELS RET'
  516.      Move to the next message that has one of the labels LABELS
  517.      (`rmail-next-labeled-message').
  518. `C-M-p LABELS RET'
  519.      Move to the previous message that has one of the labels LABELS
  520.      (`rmail-previous-labeled-message').
  521. `C-M-l LABELS RET'
  522.      Make a summary of all messages containing any of the labels LABELS
  523.      (`rmail-summary-by-labels').
  524. Specifying an empty string for one these commands means to use the last
  525. label specified for any of these commands.
  526.    The `a' (`rmail-add-label') and `k' (`rmail-kill-label') commands
  527. allow you to assign or remove any label on the current message.  If the
  528. LABEL argument is empty, it means to assign or remove the label most
  529. recently assigned or removed.
  530.    Once you have given messages labels to classify them as you wish,
  531. there are two ways to use the labels: in moving and in summaries.
  532.    The command `C-M-n LABELS RET' (`rmail-next-labeled-message') moves
  533. to the next message that has one of the labels LABELS.  LABELS is one
  534. or more label names, separated by commas.  `C-M-p'
  535. (`rmail-previous-labeled-message') is similar, but moves backwards to
  536. previous messages.  A preceding numeric argument to either one serves
  537. as a repeat count.
  538.    The command `C-M-l LABELS RET' (`rmail-summary-by-labels') displays
  539. a summary containing only the messages that have at least one of a
  540. specified set of messages.  The argument LABELS is one or more label
  541. names, separated by commas.  *Note Rmail Summary::, for information on
  542. summaries.
  543.    If the LABELS argument to `C-M-n', `C-M-p' or `C-M-l' is empty, it
  544. means to use the last set of labels specified for any of these commands.
  545.    Some labels such as `deleted' and `filed' have built-in meanings and
  546. are assigned to or removed from messages automatically at appropriate
  547. times; these labels are called "attributes".  Here is a list of Rmail
  548. attributes:
  549. `unseen'
  550.      Means the message has never been current.  Assigned to messages
  551.      when they come from an inbox file, and removed when a message is
  552.      made current.
  553. `deleted'
  554.      Means the message is deleted.  Assigned by deletion commands and
  555.      removed by undeletion commands (*note Rmail Deletion::.).
  556. `filed'
  557.      Means the message has been copied to some other file.  Assigned by
  558.      the file output commands (*note Rmail Files::.).
  559. `answered'
  560.      Means you have mailed an answer to the message.  Assigned by the
  561.      `r' command (`rmail-reply').  *Note Rmail Reply::.
  562. `forwarded'
  563.      Means you have forwarded the message to other users.  Assigned by
  564.      the `f' command (`rmail-forward').  *Note Rmail Reply::.
  565. `edited'
  566.      Means you have edited the text of the message within Rmail.  *Note
  567.      Rmail Editing::.
  568.    All other labels are assigned or removed only by the user, and it is
  569. up to the user to decide what they mean.
  570. File: lemacs,  Node: Rmail Summary,  Next: Rmail Reply,  Prev: Rmail Labels,  Up: Rmail
  571. Summaries
  572. =========
  573.    A "summary" is a buffer Rmail creates and displays to give you an
  574. overview of the mail in an Rmail file.  It contains one line per
  575. message; each line shows the message number, the sender, the labels,
  576. and the subject.  When you select the summary buffer, you can use a
  577. number of commands to select messages by moving in the summary buffer,
  578. or to delete or undelete messages.
  579.    A summary buffer applies to a single Rmail file only; if you are
  580. editing multiple Rmail files, they have separate summary buffers.  The
  581. summary buffer name is generated by appending `-summary' to the Rmail
  582. buffer's name.  Only one summary buffer is displayed at a time unless
  583. you make several windows and select the summary buffers by hand.
  584. * Menu:
  585. * Rmail Make Summary::  Making various sorts of summaries.
  586. * Rmail Summary Edit::  Manipulating messages from the summary.
  587. File: lemacs,  Node: Rmail Make Summary,  Next: Rmail Summary Edit,  Prev: Rmail Summary,  Up: Rmail Summary
  588. Making Summaries
  589. ----------------
  590.    Here are the commands to create a summary for the current Rmail file.
  591. Summaries do not update automatically; to make an updated summary, you
  592. must use one of the commands again.
  593. `C-M-h'
  594.      Summarize all messages (`rmail-summary').
  595. `l LABELS RET'
  596. `C-M-l LABELS RET'
  597.      Summarize message that have one or more of the specified labels
  598.      (`rmail-summary-by-labels').
  599. `C-M-r RCPTS RET'
  600.      Summarize messages that have one or more of the specified
  601.      recipients (`rmail-summary-by-recipients')
  602.    The `h' or `C-M-h' (`rmail-summary') command fills the summary
  603. buffer for the current Rmail file with a summary of all the messages in
  604. the file.  It then displays and selects the summary buffer in another
  605. window.
  606.    `C-M-l LABELS RET' (`rmail-summary-by-labels') makes a partial
  607. summary mentioning only the messages that have one or more of the
  608. labels LABELS.  LABELS should contain label names separated by commas.
  609.    `C-M-r RCPTS RET' (`rmail-summary-by-recipients') makes a partial
  610. summary mentioning only the messages that have one or more of the
  611. recipients RCPTS.  RCPTS should contain mailing addresses separated by
  612. commas.
  613.    Note that there is only one summary buffer for any Rmail file;
  614. making one kind of summary discards any previously made summary.
  615. File: lemacs,  Node: Rmail Summary Edit,  Prev: Rmail Make Summary,  Up: Rmail Summary
  616. Editing in Summaries
  617. --------------------
  618.    Summary buffers are given the major mode Rmail Summary mode, which
  619. provides the following special commands:
  620.      Select the message described by the line that point is on
  621.      (`rmail-summary-goto-msg').
  622. `C-n'
  623.      Move to next line and select its message in Rmail
  624.      (`rmail-summary-next-all').
  625. `C-p'
  626.      Move to previous line and select its message (`rmail-summary-
  627.      previous-all').
  628.      Move to next line, skipping lines saying `deleted', and select its
  629.      message (`rmail-summary-next-msg').
  630.      Move to previous line, skipping lines saying `deleted', and select
  631.      its message (`rmail-summary-previous-msg').
  632.      Delete the current line's message, then do like `n'
  633.      (`rmail-summary-delete-forward').
  634.      Undelete and select this message or the previous deleted message in
  635.      the summary (`rmail-summary-undelete').
  636. `SPC'
  637.      Scroll the other window (presumably Rmail) forward
  638.      (`rmail-summary-scroll-msg-up').
  639. `DEL'
  640.      Scroll the other window backward (`rmail-summary-scroll-msg-down').
  641.      Kill the summary window (`rmail-summary-exit').
  642.      Exit Rmail (`rmail-summary-quit').
  643.    The keys `C-n' and `C-p' are modified in Rmail Summary mode.  In
  644. addition to moving point in the summary buffer they also cause the
  645. line's message to become current in the associated Rmail buffer.  That
  646. buffer is also made visible in another window if it is not currently
  647. visible.
  648.    `n' and `p' are similar to `C-n' and `C-p', but skip lines that say
  649. `message deleted'.  They are like the `n' and `p' keys of Rmail itself.
  650. Note, however, that in a partial summary these commands move only
  651. among the message listed in the summary.
  652.    The other Emacs cursor motion commands are not changed in Rmail
  653. Summary mode, so it is easy to get the point on a line whose message is
  654. not selected in Rmail.  This can also happen if you switch to the Rmail
  655. window and switch messages there.  To get the Rmail buffer back in sync
  656. with the summary, use the `j' (`rmail-summary-goto-msg') command, which
  657. selects the message of the current summary line in Rmail.
  658.    Deletion and undeletion can also be done from the summary buffer.
  659. They always work based on where point is located in the summary buffer,
  660. ignoring which message is selected in Rmail.  `d'
  661. (`rmail-summary-delete-forward') deletes the current line's message,
  662. then moves to the next line whose message is not deleted and selects
  663. that message.  The inverse is `u' (`rmail-summary-undelete'), which
  664. moves back (if necessary) to a line whose message is deleted, undeletes
  665. that message, and selects it in Rmail.
  666.    When moving through messages with the summary buffer, it is
  667. convenient to be able to scroll the message while remaining in the
  668. summary window.  The commands SPC (`rmail-summary-scroll-msg-up') and
  669. DEL (`rmail-summary-scroll-msg-down') do this.  They scroll the message
  670. just as they do when the Rmail buffer is selected.
  671.    When you are finished using the summary, type `x'
  672. (`rmail-summary-exit') to kill the summary buffer's window.
  673.    You can also exit Rmail while in the summary.  `q'
  674. (`rmail-summary-quit') kills the summary window, then saves the Rmail
  675. file and switches to another buffer.
  676. File: lemacs,  Node: Rmail Reply,  Next: Rmail Editing,  Prev: Rmail Summary,  Up: Rmail
  677. Sending Replies
  678. ===============
  679.    Rmail has several commands that use Mail mode to send mail.  *Note
  680. Sending Mail::, for information on using Mail mode.  Only the special
  681. commands of Rmail for entering Mail mode are documented here.  Note
  682. that the usual keys for sending mail, `C-x m' and `C-x 4 m', are
  683. available in Rmail mode and work just as they usually do.
  684.      Send a message (`rmail-mail').
  685.      Continue editing already started outgoing message
  686.      (`rmail-continue').
  687.      Send a reply to the current Rmail message (`rmail-reply').
  688.      Forward current message to other users (`rmail-forward').
  689.    To reply to a the message you are reading in Rmail, type `r'
  690. (`rmail-reply').  This displays the `*mail*' buffer in another window,
  691. much like `C-x 4 m', but pre-initializes the `Subject', `To', `CC' and
  692. `In-reply-to' header fields based on the message you reply to.  The
  693. `To' field is given the sender of that message, and the `CC' gets all
  694. the recipients of that message.  Recipients that match elements of the
  695. list `rmail-dont-reply-to' are omitted; by default, this list contains
  696. your own mailing address.
  697.    Once you have initialized the `*mail*' buffer this way, sending the
  698. mail goes as usual (*note Sending Mail::.).  You can edit the
  699. presupplied header fields if they are not what you want.
  700.    One additional Mail mode command is available when you invoke mail
  701. from Rmail: `C-c C-y' (`mail-yank-original') inserts into the outgoing
  702. message a copy of the current Rmail message.  Normally this is the
  703. message you are replying to, but you can also switch to the Rmail
  704. buffer, select a different message, switch back, and yank the new
  705. current message.  Normally the yanked message is indented four spaces
  706. and has most header fields deleted from it; an argument to `C-c C-y'
  707. specifies the amount to indent, and `C-u C-c C-y' does not indent at
  708. all and does not delete any header fields.
  709.    Another frequent reason to send mail in Rmail is to forward the
  710. current message to other users.  `f' (`rmail-forward') makes this easy
  711. by preinitializing the `*mail*' buffer with the current message as the
  712. text, and a subject designating a forwarded message.  All you have to
  713. do is fill in the recipients and send.
  714.    You can use the `m' (`rmail-mail') command to start editing an
  715. outgoing message that is not a reply.  It leaves the header fields
  716. empty.  Its only difference from `C-x 4 m' is that it makes the Rmail
  717. buffer accessible for `C-c y', just as `r' does.  Thus, `m' can be used
  718. to reply to or forward a message; it can do anything `r' or `f' can do.
  719.    The `c' (`rmail-continue') command resumes editing the `*mail*'
  720. buffer, to finish editing an outgoing message you were already
  721. composing, or to alter a message you have sent.
  722. File: lemacs,  Node: Rmail Editing,  Next: Rmail Digest,  Prev: Rmail Reply,  Up: Rmail
  723. Editing Within a Message
  724. ========================
  725.    Rmail mode provides a few special commands for moving within and
  726. editing the current message.  In addition, the usual Emacs commands are
  727. available (except for a few, such as `C-M-n' and `C-M-h', that are
  728. redefined by Rmail for other purposes).  However, the Rmail buffer is
  729. normally read-only, and to alter it you must use the Rmail command `w'
  730. described below.
  731.      Toggle display of original headers (`rmail-toggle-headers').
  732.      Edit current message (`rmail-edit-current-message').
  733.    Rmail reformats the header of each message before displaying it.
  734. Normally this involves deleting most header fields, on the grounds that
  735. they are not interesting.  The variable `rmail-ignored-headers' should
  736. contain a regexp that matches the header fields to discard in this way.
  737. The original headers are saved permanently; to see what they look
  738. like, use the `t' (`rmail-toggle-headers') command.  This discards the
  739. reformatted headers of the current message and displays it with the
  740. original headers.  Repeating `t' reformats the message again.
  741. Selecting the message again also reformats.
  742.    The Rmail buffer is normally read only, and most of the characters
  743. you would type to modify it (including most letters) are redefined as
  744. Rmail commands.  This is usually not a problem since people rarely want
  745. to change the text of a message.  When you do want to do this, type `w'
  746. (`rmail-edit-current-message'), which changes from Rmail mode to Rmail
  747. Edit mode, another major mode which is nearly the same as Text mode.
  748. The mode line indicates this change.
  749.    In Rmail Edit mode, letters insert themselves as usual and the Rmail
  750. commands are not available.  When you are finished editing the message
  751. and are ready to go back to Rmail, type `C-c C-c', which switches back
  752. to Rmail mode.  To return to Rmail mode but cancel all the editing you
  753. have done, type `C-c C-]'.
  754.    Entering Rmail Edit mode calls the value of the variable
  755. `text-mode-hook' with no arguments, if that value exists and is not
  756. `nil'.  It then does the same with the variable `rmail-edit-mode-hook'
  757. and finally adds the attribute `edited' to the message.
  758. File: lemacs,  Node: Rmail Digest,  Prev: Rmail Editing,  Up: Rmail
  759. Digest Messages
  760. ===============
  761.    A "digest message" is a message which exists to contain and carry
  762. several other messages.  Digests are used on moderated mailing lists.
  763. All messages that arrive for the list during a period of time, such as
  764. one day, are put inside a single digest which is then sent to the
  765. subscribers.  Transmitting the single digest uses much less computer
  766. time than transmitting the individual messages even though the total
  767. size is the same, because the per-message overhead in network mail
  768. transmission is considerable.
  769.    When you receive a digest message, the most convenient way to read
  770. it is to "undigestify" it: to turn it back into many individual
  771. messages.  You can then read and delete the individual messages as it
  772. suits you.
  773.    To undigestify a message, select it and then type `M-x
  774. undigestify-rmail-message'.  This copies each submessage as a separate
  775. Rmail message and inserts them all following the digest.  The digest
  776. message itself is flagged as deleted.
  777. File: lemacs,  Node: Recursive Edit,  Next: Narrowing,  Prev: Rmail,  Up: Top
  778. Recursive Editing Levels
  779. ========================
  780.    A "recursive edit" is a situation in which you are using Emacs
  781. commands to perform arbitrary editing while in the middle of another
  782. Emacs command.  For example, when you type `C-r' inside a
  783. `query-replace', you enter a recursive edit in which you can change the
  784. current buffer.  When you exit from the recursive edit, you go back to
  785. the `query-replace'.
  786.    "Exiting" a recursive edit means returning to the unfinished
  787. command, which continues execution.  For example, exiting the recursive
  788. edit requested by `C-r' in `query-replace' causes query replacing to
  789. resume.  Exiting is done with `C-M-c' (`exit-recursive-edit').
  790.    You can also "abort" a recursive edit.  This is like exiting, but
  791. also quits the unfinished command immediately.  Use the command `C-]'
  792. (`abort-recursive-edit') for this.  *Note Quitting::.
  793.    The mode line shows you when you are in a recursive edit by
  794. displaying square brackets around the parentheses that always surround
  795. the major and minor mode names.  Every window's mode line shows the
  796. square brackets, since Emacs as a whole, rather than any particular
  797. buffer, is in a recursive edit.
  798.    It is possible to be in recursive edits within recursive edits.  For
  799. example, after typing `C-r' in a `query-replace', you might type a
  800. command that entered the debugger.  In such circumstances, two or more
  801. sets of square brackets appear in the mode line(s).  Exiting the inner
  802. recursive edit (for example, with the debugger `c' command) resumes the
  803. query-replace command where it called the debugger.  After the end of
  804. the query-replace command, you would be able to exit the first
  805. recursive edit.  Aborting exits only one level of recursive edit; it
  806. returns to the command level of the previous recursive edit.  You can
  807. then abort that one as well.
  808.    The command `M-x top-level' aborts all levels of recursive edits,
  809. returning immediately to the top level command reader.
  810.    The text you edit inside the recursive edit need not be the same text
  811. that you were editing at top level.  It depends on what the recursive
  812. edit is for.  If the command that invokes the recursive edit selects a
  813. different buffer first, that is the buffer you will edit recursively.
  814. You can switch buffers within the recursive edit in the normal manner
  815. (as long as the buffer-switching keys have not been rebound).  While you
  816. could theoretically do the rest of your editing inside the recursive
  817. edit, including visiting files, this could have surprising effects (such
  818. as stack overflow) from time to time.  It is recommended you always exit
  819. or abort a recursive edit when you no longer need it.
  820.    In general, GNU Emacs tries to avoid using recursive edits.  It is
  821. usually preferable to allow users to switch among the possible editing
  822. modes in any order they like.  With recursive edits, the only way to get
  823. to another state is to go "back" to the state that the recursive edit
  824. was invoked from.
  825. File: lemacs,  Node: Narrowing,  Next: Sorting,  Prev: Recursive Edit,  Up: Top
  826. Narrowing
  827. =========
  828.    "Narrowing" means focusing in on some portion of the buffer, making
  829. the rest temporarily invisible and inaccessible.  Cancelling the
  830. narrowing, and making the entire buffer once again visible, is called
  831. "widening".  The amount of narrowing in effect in a buffer at any time
  832. is called the buffer's "restriction".
  833. `C-x n'
  834.      Narrow down to between point and mark (`narrow-to-region').
  835. `C-x w'
  836.      Widen to make the entire buffer visible again (`widen').
  837.    Narrowing sometimes makes it easier to concentrate on a single
  838. subroutine or paragraph by eliminating clutter.  It can also be used to
  839. restrict the range of operation of a replace command or repeating
  840. keyboard macro.  The word `Narrow' appears in the mode line whenever
  841. narrowing is in effect.  When you have narrowed to a part of the
  842. buffer, that part appears to be all there is.  You can't see the rest,
  843. can't move into it (motion commands won't go outside the visible part),
  844. and can't change it in any way.  However, the invisible text is not
  845. gone; if you save the file, it will be saved.
  846.    The primary narrowing command is `C-x n' (`narrow-to-region').  It
  847. sets the current buffer's restrictions so that the text in the current
  848. region remains visible but all text before the region or after the
  849. region is invisible.  Point and mark do not change.
  850.    Because narrowing can easily confuse users who do not understand it,
  851. `narrow-to-region' is normally a disabled command.  Attempting to use
  852. this command asks for confirmation and gives you the option of enabling
  853. it; once you enable the command, confirmation will no longer be
  854. required.  *Note Disabling::.
  855.    To undo narrowing, use `C-x w' (`widen').  This makes all text in
  856. the buffer accessible again.
  857.    Use the `C-x =' command to get information on what part of the
  858. buffer you narrowed down.  *Note Position Info::.
  859.